import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class GUI extends JFrame {

	JTextField input = new JTextField();
	JDialog j=new JDialog();
	JTextArea txt=new JTextArea();
	JButton get=new JButton("取得數據資料");
	JButton enter = new JButton("輸入");
	JComboBox box;
	Font classFont = new Font("微軟正黑體", Font.BOLD, 15);
	JPanel inputField = new JPanel();
	JPanel photo =new JPanel();
	JPanel chart=new JPanel();
	int num;
	int currentQuestion=0;
	DataCollection dc;
	
	
	GUI() {
		super("問卷選項統計器 by小囧");
		String temp=new String();
		do{
			temp=JOptionPane.showInputDialog("輸入題目數量，欲離開請按取消或xx。");
			try{
				Integer.parseInt(temp);
			}catch(Exception e) {
				if(temp==null){
					System.exit(0);
				}
				else{
					JOptionPane.showMessageDialog(this, "輸入數字聽不懂阿(# °Д°)!!");
					temp="60";
				}
			}
		}while(Integer.parseInt(temp)<=0||Integer.parseInt(temp)>50);
		this.num=Integer.parseInt(temp);
		do{
			temp=JOptionPane.showInputDialog("題目最多幾個選項？");
			try{
				Integer.parseInt(temp);
			}catch(Exception e) {
				if(temp==null){
					System.exit(0);
				}
				else{
					JOptionPane.showMessageDialog(this, "輸入數字聽不懂阿(# °Д°)!!");
					temp="60";
				}
			}
		}while(Integer.parseInt(temp)<=0||Integer.parseInt(temp)>50);	
		dc=new DataCollection(this,this.num,Integer.parseInt(temp));
		
		enter.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				dc.addData(input.getText());
				input.setText("");
				chart.removeAll();
				chart.add(dc.showData(currentQuestion));
				chart.updateUI();
			}
		});
		input.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent e) {
				if(e.getKeyCode()==KeyEvent.VK_ENTER){
					dc.addData(input.getText());
					input.setText("");
					chart.removeAll();
					chart.add(dc.showData(currentQuestion));
					chart.updateUI();
				}
			}
		});
		get.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				j.setVisible(true);
				//j.removeAll();
				
				txt.setText(dc.getData());
				txt.setFont(classFont);
				
				j.setVisible(true);
				j.setDefaultCloseOperation(HIDE_ON_CLOSE);
			}
		});
		
		this.setChart();
		this.setLayout(new BorderLayout());
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setSize(700, 530);
		this.setLocationRelativeTo(null);
		this.setVisible(true);
		this.add(this.photo,BorderLayout.CENTER);
		this.add(this.get,BorderLayout.SOUTH);
		
		j.setLocationRelativeTo(null);
		j.setSize(300, 350);
		j.add(txt);
		input.setSize(180, 20);
		inputField.setLayout(new BorderLayout());
		inputField.add(input, BorderLayout.CENTER);
		inputField.add(enter, BorderLayout.EAST);
		this.add(inputField, BorderLayout.NORTH);
		
		this.input.requestFocus();

		

	}
	public void setChart(){
		String list[]=new String[this.num];
		for(int i=0;i<this.num;i++){
			list[i]=String.valueOf(i+1);
		}
		JButton next=new JButton("下一題");
		JButton prev=new JButton("上一題");
		JButton go=new JButton("GO");
		box=new JComboBox(list);
		JPanel ctrl=new JPanel();
		ctrl.setLayout(new FlowLayout());
		this.photo.setLayout(new BorderLayout());

		chart.setFont(classFont);
		chart.add(dc.showData(this.currentQuestion));
		this.photo.add(chart,BorderLayout.CENTER);
		this.photo.add(ctrl,BorderLayout.NORTH);
		ctrl.add(prev);
		ctrl.add(box);
		ctrl.add(go);
		ctrl.add(next);
		
		go.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
					currentQuestion=box.getSelectedIndex();
					//System.out.println(currentQuestion);
					box.setSelectedIndex(currentQuestion);
					chart.removeAll();
					chart.add(dc.showData(currentQuestion));
					chart.updateUI();
			}
		});
		next.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(currentQuestion<num-1){
					currentQuestion++;
					box.setSelectedIndex(currentQuestion);
					//System.out.println(currentQuestion);
					chart.removeAll();
					chart.add(dc.showData(currentQuestion));
					chart.updateUI();
				}
			}
		});
		prev.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(currentQuestion>0){
					currentQuestion--;
					//System.out.println(currentQuestion);
					box.setSelectedIndex(currentQuestion);
					chart.removeAll();
					chart.add(dc.showData(currentQuestion));
					chart.updateUI();
				}
			}
		});
	}

	public static void main(String[] a) {
		GUI g = new GUI();

	}

}
